Multi-core microprocessors have proliferated due to the performance advantages they offer. This has been made possible primarily by the rapid reduction in semiconductor device geometry dimensions resulting in increased transistor density. The presence of multiple cores in a microprocessor has created the need for the cores to communicate with one another in order to accomplish various features such as power management, cache management, debugging, and configuration that implicate more than one core.
Historically, architectural programs (e.g., operating system or application programs) running on multi-core processors have communicated using semaphores located in a system memory architecturally addressable by all the cores. This may suffice for many purposes, but may not provide the speed, precision and/or system-level transparency needed for others.